/**
 * ypeError: Cannot read property 'replace' of null
 * 请求连接错误
 */

const md5 = require('md5')
const axios = require('./service')
const stringify = require('qs').stringify
// const config = require('../config');


module.exports = (ctx) => {
	// console.log('appinto', ctx.app.config)
	return {
		Jinr(data, headers, sign){
			const method = data.method
			sign = sign || ''
			data = data || {}
			let reqLog = ''
			data['v'] = '1.0.0' //接口版本 100 101 // 3-15更新成103
			data['appid'] = 'jinr_activity' //应用标识  jinr_test jinr_embed
			data['timestamp'] = Math.round(new Date().getTime() / 1000) //发起请求时的时间戳
			data['request_no'] = Math.round(new Date().getTime()) + 'jinr_activity' //请求方必须保证此号唯一。用于两边核对日志用。

			// 此参数对应上术示例中未格式化的 JSON 数据。必须进行 URL ENCODE 转换。
			data = JSON.stringify(data)
			let sig = data + "0c83b7cb6fff1fc1782f0e5ed7ff3bb7"
			const singMd5 = md5(sig).toLocaleUpperCase()

			data = {
				data: data,
				sign: singMd5
			}
			// reqLog = `请求主站: 域名: ${Jinr_baseURL}== ${method}==参数: ${JSON.stringify(data)}`;
			// console.log();
			return new Promise((resolve, reject) => {
				axios({
					method: 'post',

					/**
					 * `data` 是作为请求主体被发送的数据。
					 *  sign  此参数对应上述救命中生成的签名值。
					 */
					data: stringify(data),
					baseURL: ctx.app.config.appDomain,
					headers: headers || {
						'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
					},

				}).then(response => {
					response = JSON.parse(response)

					resolve(response.data || {})

				}).catch(error => {

					console.log(`封装主入口-->`)
					console.log(error)
					reject(error)
				})
			})
		}
	}
}